package com.sky.mapper;

import com.github.pagehelper.Page;
import com.sky.annotation.AutoFill;
import com.sky.dto.DishDTO;
import com.sky.dto.DishPageQueryDTO;
import com.sky.entity.Dish;
import com.sky.entity.DishFlavor;
import com.sky.enumeration.OperationType;
import com.sky.vo.DishOverViewVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;


/**
 * @Description TODO
 * @Author dingchunlin
 * @Date 2023/8/6 21:19
 * @Version 1.0.0
 */
@Mapper
public interface DishMapper {
    /**
     * 菜品添加
     * @param dish
     */
    @AutoFill(value = OperationType.INSERT)
    void save(Dish dish);

    /**
     * 菜品的口味信息进行保存
     * @param dishFlavor
     */
    @AutoFill(value = OperationType.INSERT)
    void saveFlavor(DishFlavor dishFlavor);

    /**
     * 菜品分页查询
     * @param dishPageQueryDTO
     * @return
     */
    Page<Dish> getPage(DishPageQueryDTO dishPageQueryDTO);

    /**
     *根据id获取菜品信息
     * @param id
     * @return
     */
    Dish selectById(Long id);

    /**
     * 根据菜品id获取口味信息
     * @param dishId
     * @return
     */
    List<DishFlavor> selectFlavorByDishId(Long dishId);

    /**
     * 根据菜品id进行修改
     * @param dish
     */
    @AutoFill(value = OperationType.UPDATE)
    void updateById(Dish dish);

    /**
     * 根据菜品id进行删除
     * @param dishId
     */
    void deleteDishById(Long dishId);

    /**
     * 根据菜品id将口味信息进行删除
     * @param dishId
     */
    void deleteFlavorById(Long dishId);

    /**
     * 根据菜品id进行状态修改
     * @param dish
     */
    @AutoFill(value = OperationType.UPDATE)
    void updateDishStatus(Dish dish);

    /**
     * 根据分类查询菜品
     * @param categoryId
     * @return
     */
    List<Dish> selectByCategoryId(Long categoryId);

    /**
     * 工作台统计菜品数据
     * @return
     */
    DishOverViewVO getNumByStatus();

}
